package org.jrs.adaptadorEjemplos;

import java.io.Serializable;

import org.jrs.adaptadorDeJuegos.utiles.JuegoUtiles;

public class EjemploBombModelo implements Serializable{
        
        private int estado;  //0 portada, 1 estado, 2 mostrando
        private int tablero[][]=new int[10][10];
        private int tableroVisible[][]=new int[10][10];
        private int pulsadas=0;
        
        public void inicializar(){
                for (int n=0;n<tablero.length;n++){
                        for (int m=0;m<tablero[n].length;m++){
                                tableroVisible[n][m]=10;
                                tablero[n][m]=0;
                        }
                }
                for (int nMinas=0;nMinas<10;nMinas++){
                        int f=0, c=0;
                        do{
                                f=(int)(Math.random()*10);
                                c=(int)(Math.random()*10);
                        }while(tablero[f][c]==9);
                        tablero[f][c]=9;
                        for (int f1=Math.max(f-1,0); f1<=Math.min(f+1,9); f1++){
                                for (int c1=Math.max(c-1,0); c1<=Math.min(c+1,9); c1++){
                                        if (tablero[f1][c1]!=9){
                                                tablero[f1][c1]++;
                                        }
                                }
                        }
                }
                estado=1;
                pulsadas=0;
        }
        
        public void pulsaCasilla(int f, int c){
                if (estado==1){
                        if (f<0) return;
                        if (c<0) return;
                        if (f>9) return;
                        if (c>9) return;
                        if (tableroVisible[f][c]==10){
                                tableroVisible[f][c]=tablero[f][c];
                                if (tablero[f][c]==9){
                                        for (int n=0;n<tableroVisible.length;n++){
                                                for (int m=0;m<tableroVisible[n].length;m++){
                                                        tableroVisible[n][m]=tablero[n][m];
                                                }
                                        }
                                        estado=2;
                                }
                                pulsadas++;
                                if (pulsadas==90){
                                        estado=2;
                                }
                                if (tablero[f][c]==0){
                                        for (int f1=Math.max(f-1, 0);f1<=Math.min(f+1, 9);f1++){
                                                for (int c1=Math.max(c-1, 0);c1<=Math.min(c+1, 9);c1++){
                                                        pulsaCasilla(f1,c1);
                                                }
                                        }
                                }
                        }
                }
        }

        public int getEstado() {
                return estado;
        }

        public void setEstado(int estado) {
                this.estado = estado;
        }

        public int[][] getTablero() {
                return tablero;
        }

        public void setTablero(int[][] tablero) {
                this.tablero = tablero;
        }

        public int getPulsadas() {
                return pulsadas;
        }

        public void setPulsadas(int pulsadas) {
                this.pulsadas = pulsadas;
        }

        public int[][] getTableroVisible() {
                return tableroVisible;
        }

        public void setTableroVisible(int[][] tableroVisible) {
                this.tableroVisible = tableroVisible;
        }
        
        // Vision de arrays en String
        public String getTableroVisible_FormatoString() {
                return JuegoUtiles.matrizToString(tableroVisible);
        }
        
        public String getTablero_FormatoString() {
                return JuegoUtiles.matrizToString(tablero);
        }
        
}
